﻿using System;
using System.Collections.Generic;
using ProductFeedbackE = JTLeigh.Commerce.Spencer.Features.ProductFeedback.Common.Entities.ProductFeedback;

namespace JTLeigh.Commerce.Spencer.Features.ProductFeedback.Data.Providers
{

	/// <summary>
	/// Provider used to retrieve product feedback from the database.
	/// </summary>
	public interface IProductFeedbackProvider
	{

		#region Methods

		/// <summary>
		/// Gets a dictionary of product feedback by product identifier.
		/// </summary>
		/// <param name="tenantId">The tenant identifier <see cref="Guid"/> of the tenant whose
		/// product feedback is to be retrieved.</param>
        /// <param name="catalogId">The catalog identifier <see cref="String"/> of the catalog
        /// that the product whose product feedback is to be retrieved is in.</param>
        /// <param name="productId">The product identifier <see cref="String"/> of the product 
		/// whose product feedback is to be retrieved.</param>
		/// <returns>A <see cref="Dictionary{TKey,TValue}"/> of <see cref="ProductFeedbackE"/> 
		/// keyed by feedback identifier <see cref="Guid"/>.</returns>
		Dictionary<Guid, ProductFeedbackE> GetProductFeedback(Guid tenantId, string catalogId, string productId);

		#endregion // Methods

	}

}
